home *** CD-ROM | disk | FTP | other *** search
Wrap
var PersonasRotatorAjaxUpload={ asking:false, hidetooltip: function(event){ var intendedTooltip=document.getElementById(event.target.id.split("icon")[0]+"div"); intendedTooltip.style.display="none"; }, showtooltip: function (event){ var intendedTooltip=document.getElementById(event.target.id.split("icon")[0]+"div"); intendedTooltip.style.top=event.pageY+"px"; intendedTooltip.style.left=(event.pageX+15)+"px"; intendedTooltip.style.display="block"; }, movetooltip: function (event){ var intendedTooltip=document.getElementById(event.target.id.split("icon")[0]+"div"); intendedTooltip.style.top=event.pageY+"px"; intendedTooltip.style.left=(event.pageX+15)+"px"; }, startAjaxUpload: function (event){ try{ var url; var req; var formFile=document.getElementById('personafile').files[0]; var formFileMIMEType = document.defaultView.personaRotator.personaMIMEType; var formFileBinary=formFile.getAsBinary(); var formtitle = document.getElementById('personaname').value; var formtags = document.getElementById('personatags').value; var formdescription = document.getElementById('personadescription').value; var formposition = document.getElementById('position').value; var formscreenRes = document.getElementById('screenRes').value; var formbackgroundColor = document.getElementById('backgroundColor').value; var formmedProfId = document.getElementById('medProfId').value; var formFileFileName = document.getElementById('personafile').value; var trimmedFormFileFileName = formFile.fileName; var formUploadButtonValue = "upload"; function f(o){ var scriptableUnicodeConverter = Components.classes['@mozilla.org/intl/scriptableunicodeconverter'] .createInstance(Components.interfaces.nsIScriptableUnicodeConverter); scriptableUnicodeConverter.charset = "UTF8"; return scriptableUnicodeConverter.ConvertFromUnicode(o); } var boundaryString = '3e0c7f3a3f504730beb54a9a10e2831c'; var boundary = '--' + boundaryString; var requestBody = boundary + '\n' + 'Content-Disposition: form-data; name="title"' + '\n' + '\n' + f(formtitle) + '\n' + boundary + '\n' + 'Content-Disposition: form-data; name="tags"' + '\n' + '\n' + f(formtags) + '\n' + boundary + '\n' + 'Content-Disposition: form-data; name="description"' + '\n' + '\n' + f(formdescription) + '\n' + boundary + '\n' + 'Content-Disposition: form-data; name="position"' + '\n' + '\n' + formposition + '\n' + boundary + '\n' + 'Content-Disposition: form-data; name="screenRes"' + '\n' + '\n' + formscreenRes + '\n' + boundary + '\n' + 'Content-Disposition: form-data; name="backgroundColor"' + '\n' + '\n' + formbackgroundColor + '\n' + boundary + '\n' + 'Content-Disposition: form-data; name="medProfId"' + '\n' + '\n' + formmedProfId + '\n' + boundary + '\n' + 'Content-Disposition: form-data; name="uploadFile"; filename="' + f(trimmedFormFileFileName) + '"' + '\n' + 'Content-Type: '+ formFileMIMEType + '\n' + '\n' + formFileBinary+ '\n' + boundary + '\n' + 'Content-Disposition: form-data; name="upload"' + '\n' + '\n' + formUploadButtonValue + '\n' + boundary; if(requestBody.length>650*1024){ alert("Description can not be over 50KB long. Please re-edit the description area"); PersonasRotatorAjaxUpload.asking=false; return; } event.target.disabled=true; function updateProgress(event) { document.getElementsByTagName("button")[0].firstChild.nodeValue=parseInt((event.position/event.totalSize)*100)+"%"; } function ajaxOnLoad(event) { if(req.responseText.indexOf("http://personasrotator.com/persona/gallery/")==0){ var responseText=req.responseText; document.defaultView.personasrotatorretrievedSiteURI=responseText; //persona uploaded successfully. Send the notification to the database. var uploadedTrueEvent = document.createEvent("Events"); uploadedTrueEvent.initEvent("personasrotatorUploadedTrue", false, false, window, null); document.dispatchEvent(uploadedTrueEvent); document.getElementsByTagName("button")[0].firstChild.nodeValue="Redirecting..."; } else { alert("An error occured during upload"); } } function ajaxOnError(event){ alert('There was a problem with the request.'); } // start the ajax req url="http://personasrotator.com/uploadSharePersona.php"; req = new XMLHttpRequest(); if(req.upload==null){//For Backward Compability < FF 3.5 req.onload = ajaxOnLoad; req.onerror = ajaxOnError; req.onuploadprogress = updateProgress; } else{//For => FF 3.5 req.addEventListener("load",ajaxOnLoad,false); req.addEventListener("error",ajaxOnError,false); req.upload.addEventListener("progress",updateProgress,false); } req.open('POST',url,true); req.setRequestHeader("Content-type", "multipart/form-data; \ boundary="+boundaryString); req.setRequestHeader("Connection","close"); req.setRequestHeader("Content-length",requestBody.length); req.sendAsBinary(requestBody); } catch(err){ alert(err); } }, checkServerState: function (event){ //before upload check the server state. 0 or 1 may return. var url="http://personasrotator.com/ajaxcheck/state.txt"; // start the ajax req var req = new XMLHttpRequest(); req.onload = function() { if(parseInt(req.responseText)){ //start ajax upload PersonasRotatorAjaxUpload.startAjaxUpload(event); } else { alert('Could not connect to upload server. Please try again later.'); PersonasRotatorAjaxUpload.asking=false; } } req.onerror=function(){ alert('An error occured during server communication. Please try again later.'); } req.open('GET',url,true); req.channel.loadFlags |= Components.interfaces.nsIRequest.LOAD_BYPASS_CACHE; req.send(null); PersonasRotatorAjaxUpload.asking=true; document.getElementsByTagName("button")[0].firstChild.nodeValue="Please wait..."; }, checkFields: function (){ var alerttext=""; var errorFoundNodeArray=[]; var nodeArray=[]; var uploadform=document.getElementById("form"); var inputs=uploadform.getElementsByTagName("input"); var descriptiontextarea=uploadform.getElementsByTagName("textarea")[0]; for (var i=0;i<inputs.length;i++){ nodeArray.push(inputs[i]); } nodeArray.push(descriptiontextarea); for (var i=0;i<nodeArray.length;i++){ if(!/\S/.test(nodeArray[i].value.replace(/^\s+|\s+$/g,""))){ errorFoundNodeArray.push(nodeArray[i]); } } function returnFieldName(passedNode){ return passedNode.previousSibling.firstChild.nodeValue; } if(errorFoundNodeArray.length==3){alerttext=returnFieldName(errorFoundNodeArray[0])+", "+returnFieldName(errorFoundNodeArray[1])+" and "+returnFieldName(errorFoundNodeArray[2]);} else if(errorFoundNodeArray.length==2){alerttext=returnFieldName(errorFoundNodeArray[0])+" and "+returnFieldName(errorFoundNodeArray[1]);} else if(errorFoundNodeArray.length==1){alerttext=returnFieldName(errorFoundNodeArray[0])} if(errorFoundNodeArray.length>0){ alert("Please fill out "+alerttext+ ((errorFoundNodeArray.length==1) ? " field." : " fields.")); return false; } return true; }, submitButtonClick: function (event){ if(PersonasRotatorAjaxUpload.asking) {event.preventDefault();return;} if(!PersonasRotatorAjaxUpload.checkFields()){ event.preventDefault(); return; } else { PersonasRotatorAjaxUpload.checkServerState(event);//check server state first event.preventDefault(); } } } var nametooltipicon=document.getElementById("nametooltipicon"); var tagtooltipicon=document.getElementById("tagtooltipicon"); var descriptiontooltipicon=document.getElementById("descriptiontooltipicon"); nametooltipicon.addEventListener("mouseover",PersonasRotatorAjaxUpload.showtooltip,false); nametooltipicon.addEventListener("mouseout",PersonasRotatorAjaxUpload.hidetooltip,false); nametooltipicon.addEventListener("mousemove",PersonasRotatorAjaxUpload.movetooltip,false); tagtooltipicon.addEventListener("mouseover",PersonasRotatorAjaxUpload.showtooltip,false); tagtooltipicon.addEventListener("mouseout",PersonasRotatorAjaxUpload.hidetooltip,false); tagtooltipicon.addEventListener("mousemove",PersonasRotatorAjaxUpload.movetooltip,false); descriptiontooltipicon.addEventListener("mouseover",PersonasRotatorAjaxUpload.showtooltip,false); descriptiontooltipicon.addEventListener("mouseout",PersonasRotatorAjaxUpload.hidetooltip,false); descriptiontooltipicon.addEventListener("mousemove",PersonasRotatorAjaxUpload.movetooltip,false); document.getElementById("submitbutton").addEventListener("click",PersonasRotatorAjaxUpload.submitButtonClick,false);